package com.it.a_jichu.d_流程控制;

/*
 * 流程控制
 * 【说明】：用于控制程序（代码）的执行顺序
 * 【执行顺序】：
 *          1、顺序结构：程序从上到下逐行地执行，中间没有任何判断和跳转（默认执行顺序）
 *          2、分支结构： 根据条件，选择性地执行某段代码。有 if…else 和 switch-case 两种分支语句
 *          3、循环结构：根据循环条件，重复性的执行某段代码。有 while、 do…while、for 三种循环语句
 */
public class main {
    public static void main(String[] args) {

        /**
         * 分支结构：判断特定的条件、选择执行某段代码，要么是true、要么是false
         */
        int age = 9;

        // 单分支：if:
        if (age > 10) {
            System.out.println(age);
        }

        // 双分支语句：if - else (二选一)
        if (age >= 18) {
            System.out.println("成年人");
        } else {
            System.out.println("未成年人");
        }

        // 多分支语句：if - elseif - else  (多选一)
        int grade = 88;
        if (grade >= 90 && grade < 100) {
            System.out.println("你的成绩是：优秀！" + grade);
        } else if (grade <= 89 && grade >= 80) {
            System.out.println("你的成绩是：良好！" + grade); //
        } else if (grade <= 79 && grade >= 70) {
            System.out.println("你的成绩是：普通！" + grade);
        } else {
            System.out.println("你的成绩是：不及格！" + grade);
        }


        /**
         * 选择结构：通过比较值来决定执行那条代码， switch语句适用于多选一、固定值的判断、不适合区间值的判断
         * 【注意事项】：
         *         1、根据表达式的值、依次匹配 case语句、一旦与某一个case中的常量相等、就会执行此case中的执行语句
         *            执行完case后、如果遇到 break：结束switch结构、如果没有break、则会依次执行下面的case、该情况又叫穿透
         *            直到遇到 break 或者执行所有的 case语句及default语句、退出当前switch结构
         *         2、switch中的表达式 只能是特定的数据结构、如下：byte \ short \ char \ int \ 枚举(JDK5.0新增) \ String(JDK7.0新增)
         *         3、case 中的必须是常量、表达式与case中的常量 必须相等、不能进行区间判断
         * 【关键字】：
         *         case：常量 相当于 if()
         *         break：结束
         *         default：无法匹配 执行的语句（相等于else）
         */
        int a = 1;
        switch (a) {
            case 0:
                System.out.println("0");
                break; // 结束当前 switch结构
            case 1:
                System.out.println("1");
                break;
            case 2:
                System.out.println("2");
                break;
            default:
                System.out.println("其他");
        }


        /**
         * 循环结构：循环结构具有在某些条件满足的情况下，反复执行特定代码的功能
         */
        // for循环：先判断，在执行
        for (int i = 0; i < 5; i++) {
            System.out.println("Hello World");
        }

        // while循环：先判断，再执行
        int i = 0;
        while (i <= 50) {
            System.out.println("Hello Java" + i);
            i++;
        }

        // do...while循环( 仅了解 ) 先执行，再判断
        int e = 0;
        do {
            System.out.println("Hello Java" + i);
            e++;
        } while (e <= 50);


        /**
         * 关键字
         *      break：
         *            【适用范围】： switch 及循环结构
         *            【作用】：用于跳出（结束循环
         *      continue：
         *            【适用范围】：循环结构
         *            【作用】：用于跳出当前循环，执行下一个循环
         */
    }
}
